//
//  SEGBasicDataBase.h
//  SEGBasic
//
//  Created by 刘山 on 2018/3/15.
//  Copyright © 2018年 刘山. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <FMDB.h>
#import <FMDatabaseAdditions.h>

static FMDatabaseQueue* _queue;
static FMDatabase* _database;

@interface SEGBasicDataBase : NSObject

/*
 
 1 . 数据库批量操作 ？（增加，删除，修改）
 2 . 数据即使更新 ？
 3 .
 
 */

/**
 *  创建数据库（这个方法的数据库存储的地址是基于Cash目录）
 *
 *  @param dbName 数据库名
 */
+ (void)createDBWithDBName:(NSString*)dbName;

/**
 *  创建表
 *
 *  @param aName 数据库名
 *  @param table 表名
 */
+ (BOOL)createTableWithDBName:(NSString*)aName WithTable:(NSString*)table;

/**
 *  插入、修改、删除 数据表
 *
 *  @param aName  数据库名
 *  @param sql    执行的SQL语句(条件的数值用：？来隔离)
 *  @param values 条件数值
 *
 *  @return YES:执行成功！
 *
 *  示例：[SEGDatabase executeDB:DBName WithSQL:@"delete from t_table where age > ?;" OFValues:@[ @(2) ]];
 */

+ (BOOL)executeDB:(NSString*)aName WithSQL:(NSString*)sql OfValues:(NSArray*)values;

/**
 *  插入数据
 *
 *  @param aName 数据库名
 *  @param table 表名
 *  @param dict  参数字典
 *
 *  @return YES 执行成功！
 */
+ (BOOL)insertRowWithDBName:(NSString*)aName tableName:(NSString*)table ArgumentsDict:(NSDictionary*)dict;

/**
 *  查询数据
 *
 *  @param aName     数据库名
 *  @param table     表名
 *  @param headers   列名
 *  @param conditons 条件
 *
 *  @return 返回值：Array
 */
+ (NSArray*)searchDB:(NSString*)aName WithTable:(NSString*)table ForHeaders:(NSArray*)headers Conditions:(NSArray*)conditons;

/**
 *  查询数据
 *
 *  @param aName  数据库名
 *  @param sql    查询语句
 *  @param values 查询参数
 *
 *  @return 返回值：Array
 
 *  示例：NSArray* arr = [SEGDatabase executeQueryWithDBName:DBName WithSQL:@"SELECT * FROM t_table WHERE sex = ?" OfValues:@[ @0 ]];
 */
+ (NSArray*)executeQueryWithDBName:(NSString*)aName WithSQL:(NSString*)sql OfValues:(NSArray*)values;

//数据库升级、数据迁移  暂时待定...
+ (BOOL)updateDatabaseWithDB:(NSString*)dbName TableName:(NSString*)tableName ColumnName:(NSString*)columnName;

@end
